import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import vueDevTools from 'vite-plugin-vue-devtools'
import legacy from '@vitejs/plugin-legacy'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import VitePluginCompression from 'vite-plugin-compression'
import { VantResolver } from '@vant/auto-import-resolver';

// https://vite.dev/config/
export default defineConfig({
  // base: './', // 改为相对路径可以本地直接打开网页
  // base: 'http://v.lotmaster.cn/tv-site',
  // base: '/tv-site/',
  base: './',
  server: {
    host: '0.0.0.0',
  },
  plugins: [
    vue(),
    AutoImport({
      imports: ['vue'],
      resolvers: [VantResolver()],
    }),
    Components({
      resolvers: [VantResolver()],
    }),
    legacy({
      targets: ['defaults', 'not IE 11', 'last 2 versions', '> 1%', 'Android >= 4.4'], // 兼容性调整
      renderLegacyChunks: true,
      modernPolyfills: true,
    }),
    VitePluginCompression({
      // 是否在控制台输出压缩结果
      verbose: true,
      // 不禁用压缩
      disable: false,
      // 压缩后是否删除原文件
      deleteOriginFile: false,
      // 压缩前最小文件大小 100k
      threshold: 102400,
      // 文件类型
      algorithm: 'gzip',
      // 压缩算法
      ext: '.gz'
    }),
    vueJsx(),
    vueDevTools(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },
  build: {
    rollupOptions: {
      output: {
        manualChunks(id) {
          // 优先匹配 Vant 的模块路径
          if (id.includes('node_modules/vant')) {
            return 'vant';
          }
          // 其他第三方库打包进一个文件
          if (id.includes('node_modules')) {
            return 'vendor'
          }
        }
      }
    }
  }
  /*build: {
    target: 'es2015',
    minify: 'terser',
    terserOptions: {
      compress: {
        //  生产环境时移除console
        drop_console: true,
        drop_debugger: true,
      }
    }
  }*/
})
